#-*- coding: utf-8 -*
#@author 小测试
#@create 2020-03-04 22:13
"""
将用例和映射的数据模板组合成用例
区分冒烟用例和非冒烟用例
"""
from ApiDemo.util.tools.open_excle import OpenExcel
from ApiDemo.util.tools.open_json import OpenJson
from ApiDemo.util.get_hash import my_base64_encrypt
from ApiDemo.util.get_head import header
from ApiDemo.util.get_log import MyLog

log=MyLog()
import json

def atuo_case(json_path,excle_path):
    case_smoke=[]#冒烟用例
    case_test=[]#测试用例

    api_data=OpenJson(json_path).get_data
    case_data=OpenExcel(excle_path).get_all_json()

    for _page_key,_page_value in case_data.items():
        page_data=case_data[_page_key]#标签页数据
        # print("开始读取{}用例".format(_page_key))
        for _id_key,_id_value in page_data.items():
            case_id_data=page_data[_id_key]#行数据
            api_name=case_id_data["接口名字"]
            api_value=api_data(api_name)
            case_title=case_id_data["用例描述"]
            case_rank=case_id_data["用例等级"]
            if case_id_data["请求数据"]=="":
                _case_data=None
            else:
                # print(case_title)
                _case_data=json.loads(case_id_data["请求数据"],strict=False)

            case_expect=json.loads(case_id_data["预期结果"],strict=False)
            api=api_value["api"]
            method=api_value["method"]
            head=api_value["header"]
            isEncrypt=api_value["isEncrypt"]
            _data=api_value['data']
            data=_data.copy()
            if isEncrypt:#数据加密
                isEn_value=_case_data[isEncrypt]
                _case_data[isEncrypt]=my_base64_encrypt(isEn_value)
                data.update(_case_data)
            else:
                if _case_data !=None:
                    data.update(_case_data)
                else:
                    data=case_data
            case_mess=(api_name,case_title,api,method,head,data,case_expect)

            if case_rank=="smoke":
                case_smoke.append(case_mess)
                # print("{}用例为:{}".format(case_rank,case_title))
            elif case_rank=="test":
                case_test.append(case_mess)
                # print("{}用例为:{}".format(case_rank,case_title))
    log.info("生成测试用例集成功")
    return case_smoke,case_test

if __name__ == '__main__':
    json_path=r"..\cases\user\user_api_data.json"
    excle_path=r"..\cases\user\use_api_case.xls"
    data=atuo_case(json_path=json_path,excle_path=excle_path)
    for value in data:
        print(value)
